home *** CD-ROM | disk | FTP | other *** search
- ------------------------------------------------------------------------------
- -- --
- -- GNAT COMPILER COMPONENTS --
- -- --
- -- I N T E R F A C E S . O S 2 L I B --
- -- --
- -- S p e c --
- -- --
- -- $Revision: 1.11 $ --
- -- --
- -- Copyright (C) 1993,1994,1995,1996 Free Software Foundation, Inc. --
- -- --
- -- GNAT is free software; you can redistribute it and/or modify it under --
- -- terms of the GNU General Public License as published by the Free Soft- --
- -- ware Foundation; either version 2, or (at your option) any later ver- --
- -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
- -- for more details. You should have received a copy of the GNU General --
- -- Public License distributed with GNAT; see file COPYING. If not, write --
- -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
- -- MA 02111-1307, USA. --
- -- --
- -- As a special exception, if other files instantiate generics from this --
- -- unit, or you link this unit with other files to produce an executable, --
- -- this unit does not by itself cause the resulting executable to be --
- -- covered by the GNU General Public License. This exception does not --
- -- however invalidate any other reasons why the executable file might be --
- -- covered by the GNU Public License. --
- -- --
- -- GNAT was originally developed by the GNAT team at New York University. --
- -- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
- -- --
- ------------------------------------------------------------------------------
-
- -- This package (and children) provide interface definitions to the standard
- -- OS/2 Library. They are merely a translation of the various <bse*.h> files.
-
- -- It is intended that higher level interfaces (with better names, and
- -- stronger typing!) be built on top of this one for Ada (i.e. clean)
- -- programming.
-
- -- We have chosen to keep names, types, etc. as close as possible to the
- -- C definition to provide easier reference to the documentation. The main
- -- exception is when a formal and its type (in C) differed only by the case
- -- of letters (like in HMUX hmux). In this case, we have prepended "F_" to
- -- the formal (i.e. F_hmux : HMUX).
-
- with Interfaces.C;
- with Interfaces.C.Strings;
- with System;
-
- package Interfaces.OS2Lib is
- pragma Preelaborate (OS2Lib);
-
- package IC renames Interfaces.C;
- package ICS renames Interfaces.C.Strings;
-
- -------------------
- -- General Types --
- -------------------
-
- type APIRET is new IC.unsigned_long;
- type APIRET16 is new IC.unsigned_short;
- subtype APIRET32 is APIRET;
-
- subtype PSZ is ICS.chars_ptr;
- subtype PCHAR is ICS.chars_ptr;
- subtype PVOID is System.Address;
-
- type BOOL32 is new IC.unsigned_long;
- False32 : constant BOOL32 := 0;
- True32 : constant BOOL32 := 1;
-
- type UCHAR is new IC.unsigned_char;
- type USHORT is new IC.unsigned_short;
- type ULONG is new IC.unsigned_long;
- type PULONG is access all ULONG;
-
- ---------------------
- -- Time Manegement --
- ---------------------
-
- procedure DosSleep (How_long : IC.int);
- pragma Import (C, DosSleep, External_Name => "DosSleep");
-
- type DATETIME is
- record
- hours : UCHAR;
- minutes : UCHAR;
- seconds : UCHAR;
- hundredths : UCHAR;
- day : UCHAR;
- month : UCHAR;
- year : USHORT;
- timezone : IC.short;
- weekday : UCHAR;
- end record;
-
- type PDATETIME is access all DATETIME;
-
- function DosGetDateTime (pdt : PDATETIME) return APIRET;
- pragma Import (C, DosGetDateTime, External_Name => "DosGetDateTime");
-
- function DosSetDateTime (pdt : PDATETIME) return APIRET;
- pragma Import (C, DosSetDateTime, External_Name => "DosSetDateTime");
-
- ----------------------------
- -- Miscelleneous Features --
- ----------------------------
-
- -- Features which do not fit any child
-
- function DosBeep (Freq : ULONG; Dur : ULONG) return APIRET;
- pragma Import (C, DosBeep, External_Name => "DosBeep");
-
- procedure Must_Not_Fail (Return_Code : OS2Lib.APIRET);
- -- Many OS/2 functions return APIRET and are not supposed to fail. In C
- -- style, these would be called as procedures, disregarding the returned
- -- value. This procedure can be used to achieve the same effect with a
- -- call of the form: Must_Not_Fail (Some_OS2_Function (...));
-
- procedure Sem_Must_Not_Fail (Return_Code : OS2Lib.APIRET);
- -- Similar to Must_Not_Fail, but used in the case of DosPostEventSem,
- -- where the "error" code ERROR_ALREADY_POSTED is not really an error.
-
- end Interfaces.OS2Lib;
-